package com.houdehong.wsclient.client;

import lombok.extern.slf4j.Slf4j;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import java.net.URI;

/**
 * 自定义WebSocket客户端，继承自WebSocketClient
 * 用于建立和服务器的WebSocket连接，并处理连接过程中的各种事件
 */
@Slf4j
public class MyWebSocketClient extends WebSocketClient {

    /**
     * 构造函数，初始化WebSocket客户端
     * @param serverUri 服务器的URI地址
     */
    public MyWebSocketClient(URI serverUri) {
        super(serverUri);
    }

    /**
     * 当WebSocket连接建立成功时调用
     * 记录连接成功的日志信息
     * @param arg0 服务器握手信息，未使用
     */
    @Override
    public void onOpen(ServerHandshake arg0) {
        log.info("------ WebSocketClient onOpen ------");
    }

    /**
     * 当WebSocket连接关闭时调用
     * 记录连接关闭的日志信息
     * @param arg0 关闭代码，表示关闭的原因
     * @param arg1 描述关闭的字符串
     * @param arg2 表示是否由远程主机关闭了连接
     */
    @Override
    public void onClose(int arg0, String arg1, boolean arg2) {
        log.info("------ WebSocket onClose ------{}",arg1);
    }

    /**
     * 当WebSocket连接发生错误时调用
     * 记录错误日志信息
     * @param arg0 异常信息
     */
    @Override
    public void onError(Exception arg0) {
        log.error("------ WebSocket onError ------{}",arg0);
    }

    /**
     * 当接收到服务器发送的消息时调用
     * 记录接收到的消息日志信息
     * @param response 从服务器接收到的消息
     */
    @Override
    public void onMessage(String response) {
        log.info("-------- 接收到服务端数据： " + response + "--------");
    }

}
